파라미터 스토어에 저장된 파라미터를 CloudFormation에서 사용하기
안녕하세요, 임채정입니다.
이번 블로그에서는 파라미터 스토에서 저장된 파라미터를 활용해서 CloudFormation에 적용하는 방법에 대해서 살펴보려고 합니다.
아젠다
- 파라미터 생성
- Cfn에 적용하기
- Cfn 실행하기
1. 파라미터 생성
먼저 AWS Systems Manager 콘솔화면에서 [파라미터 스토어] 태그로 이동해서 파라미터를 생성합니다.
[EC2의 AMI ID]
이름: /EC2/AMI-ID
유형: 문자열
값: ami-0bcc04d20228d0cf6
2. Cfn에 적용하기
사용할 템플릿 정리
이번 블로그에서는 해당 템플릿을 사용합니다.
ec2.yaml
AWSTemplateFormatVersion: "2010-09-09" Description: "CloudFormation Simple Template" # ------------ # Parameters # ------------ Parameters: System: Description: "System prefix of each resource names." Type: String Default: "System" Env: Description: "Environment" Type: String Default: "dev" EC2KeyName: Description: "EC2 key pair name" Default: "lim-tokyo-key" Type: String EC2InstanceType: Description: "EC2 instance type" Default: "t2.micro" Type: String AMI: Description: "Server AMI" Default: /EC2/AMI-ID Type: AWS::SSM::Parameter::Value<String> # ------------ # Resources # ------------ Resources: # ------------ # EC2 Instance # ------------ EC2Instance: Type: AWS::ec2::Instance Properties: ImageId: !Ref AMI InstanceType: !Ref EC2InstanceType KeyName: !Ref EC2KeyName SecurityGroupIds: - !Ref SecurityGroup SubnetId: subnet-be55e6f6 Tags: - Key: Name Value: Fn::Sub: "${System}-${Env}-ec2" # ------------ # SecurityGroup # ------------ SecurityGroup: Type: AWS::ec2::SecurityGroup Properties: GroupName: Fn::Sub: "${System}-${Env}-sg" GroupDescription: Fn::Sub: "${System}-${Env}-sg" VpcId: vpc-db8475bd SecurityGroupIngress: - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: 10.0.0.0/8 Tags: - Key: Name Value: Fn::Sub: "${System}-${Env}-sg"
여기서 원래라면 다음과 같이 작성된 부분을
AMI: Description: "Server AMI" Default: "ami-0bcc04d20228d0cf6" Type: String
파라미터로 대체하기 위해 다음과 같이 수정되었습니다.
AMI: Description: "Server AMI" Default: /EC2/AMI-ID Type: AWS::SSM::Parameter::Value<String>
3. Cfn 실행하기
이번에는 실제로 실행해보겠습니다.
먼저 새로운 스택을 생성하기 위해 템플릿을 업로드합니다.
이 때, 파라미터를 확인하보면 AMI에 /EC2/AMI-ID
가 입력되어 있습니다.
그 다음에 스택을 생성하면 다음과 같이 성공적으로 잘 만들어집니다.
[파라미터] 태그에서 확인을 해보면 해석된 값으로 파라미터의 값을 확인할 수도 있습니다.
또한, EC2 인스턴스에서 확인해봐도 파라미터 값인 AMI가 잘 입력되어 있습니다.
이렇게 Cfn 템플릿에 파라미터를 활용해서 작성해봤습니다.
본 블로그 게시글을 보시고 문의 사항이 있으신 분들은 클래스메소드코리아 ([email protected])로 연락 주시면 빠른 시일 내 담당자가 회신 드릴 수 있도록 하겠습니다 !